package ltd.dujiabao.bio;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @author : DuJiabao
 * @Project : io_test
 * @Time : 2021/5/30 10:09
 * @Desc :
 */
public class Server {
  public static void main(String[] args) throws IOException {
    ServerSocket server = new ServerSocket(9999);
    // 主线程专门用来处理连接请求
    for (; ; ) {
      Socket socket = server.accept();  // 接受连接请求，没有连接请求过来的时候，会阻塞在这里
      InputStream inputStream = socket.getInputStream();
      BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
      // 针对每一个连接，开启一个新的线程用于监听并处理
      new Thread(() -> {
        String msg;
        try {
          while ((msg = reader.readLine()) != null) {  // 监听，一直监听，当有数据来就输出一下，然后继续监听
            System.out.println(Thread.currentThread().getName() + " : " + msg);
          }
        } catch (IOException e) {
          e.printStackTrace();
        }
      }).start();
    }
  }
}
